//////////////////////////////////////////////////////////////////////////

#ifndef _CLIENT_H_
#define _CLIENT_H_

//////////////////////////////////////////////////////////////////////////

#ifndef _OBSERVER_H_
#include "observer.h"
#endif

#ifndef _CONNECTION_H_
#include "connection.h"
#endif

#ifndef _BUFFER_H_
#include "buffer.h"
#endif

#include <string>

//////////////////////////////////////////////////////////////////////////


class Client : public Observer
{
//////////////////////////////////////////////////////////////////////////

public:

//////////////////////////////////////////////////////////////////////////


    /** Constructor */
    Client();

//////////////////////////////////////////////////////////////////////////


    /** Connect to server */
    void Connect();

//////////////////////////////////////////////////////////////////////////


    /** Send */
    void Send( const std::string& _str );

//////////////////////////////////////////////////////////////////////////


    /** Close connection */
    void Close();


//////////////////////////////////////////////////////////////////////////

private:

//////////////////////////////////////////////////////////////////////////


    /** Observer interface implementation */
    virtual void OnEvent( Event _event, Observable* _observable );


//////////////////////////////////////////////////////////////////////////


    /** Connection */
    Connection m_Conn;

//////////////////////////////////////////////////////////////////////////
};

#endif